package com.edu.controller;

import com.edu.bean.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.validation.support.BindingAwareModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

@Controller
public class RequestController {

    /**
     *  在方法中 声明一个 HttpServletRequest 类型的参数
     */
    @RequestMapping("/request1")
    public String request1(HttpServletRequest request){
        request.setAttribute("msg","这是通过request对象 直接放入的参数");
        return "forward:test.jsp";
    }

    /**
     *  在方法参数中 声明一个 map集合
     */
    @RequestMapping("/request2")
    public String request2(Map map){
        map.put("msg","这是通过 map向request中存放的数据");
        System.out.println(map.getClass());
        return "forward:test.jsp";
    }

    /**
     *  在方法参数中 声明一个 Model对象
     */
    @RequestMapping("/request3")
    public String request3(Model model){
        model.addAttribute("msg","这是通过model放入到request中的数据");
        System.out.println(model.getClass());
        return "forward:test.jsp";
    }

    /**
     *  在方法参数中 声明一个 ModelMap
     */
    @RequestMapping("/request4")
    public String request4(ModelMap modelMap){
        modelMap.put("msg","这是通过ModelMap存入到request中的数据");
        System.out.println(modelMap.getClass());
        return "forward:test.jsp";
    }

    /**
     *  在方法参数中 声明一个 BindingAwareModelMap
     */
    @RequestMapping("/request5")
    public String request5(BindingAwareModelMap bamm){
        bamm.addAttribute("msg","这是通过bamm存入到request中的数据");
        System.out.println(bamm.getClass());
        return "forward:test.jsp";
    }

    /**
     *  在方法参数中 声明一个 ModelAndView
     *     需要返回一个对象
     */
    @RequestMapping("/request6")
    public ModelAndView request6(ModelAndView mv){
        mv.addObject("msg","这是通过modelAndView存入request中的数据");
        mv.setViewName("forward:test.jsp");
        return mv;
    }

    @RequestMapping("/request7")
    public ModelAndView request7(){
        ModelAndView mv = new ModelAndView();
        mv.addObject("msg","这是通过modelAndView存入request中的数据");
        mv.setViewName("forward:test.jsp");
        return mv;
    }

    @RequestMapping("/request8")
    public String request7(User user){
        //自定 去把 user对象 放入到request作用域
        return "forward:user.jsp";
    }

    @RequestMapping("/request9")
    public String request7(int userId,String username,String password){
        //自定 去把 user对象 放入到request作用域
        return "forward:user.jsp";
    }

}
